High speed hardware implementation of modified Reed-Solomon decoder

ABSTRACT

A decoder suitable for use in a digital communications system utilizing an RS(n′, k′) code modified from an RS(n, k) code receives n′-symbol vectors each including k′ message symbols and r′=n′−k′ parity symbols and decodes the n′-symbol vectors to correct errors therein, wherein n, k, n′, and k′ are integers, and k′&lt;n′&lt;n, k′&lt;k&lt;n, and wherein the decoder stores therein one erasure locator polynomial σ 0 (x). The decoder includes a syndrome calculator for receiving the n′-symbol vectors and for calculating syndromes of each n′-symbol vector, wherein the i-th syndrome S i  of one n′-symbol vector R′, (r n′−1 , r n′−2 , . . . , r 0 ), is S i =R s (α i+1 ) for i=0, 1, . . . , n−k−1, wherein R s (x)=r n′−1 x n′−1 +r n′−2 x n′−2 + . . . +r 0 , and means for finding the locations and values of the errors in each n′-symbol vector using the syndromes thereof and the one erasure locator polynomial σ 0 (x).

FIELD OF THE INVENTION

This invention is in general related to a high speed Reed-Solomon (RS)decoder suitable for decoding shortened/punctured RS codes.

BACKGROUND OF THE INVENTION

A digital communications system includes an encoder (or transmitter) forencoding and transmitting data, a decoder (or receiver) for receivingand decoding data, and a channel between the encoder and decoder. Thechannel is generally noisy and causes corruption in the data transmittedtherethrough. For the correct data to be recovered, an error-correctioncode is used during encoding at the encoder side and used by the decoderto correct the corruption in the data. One popular type of sucherror-correction code is called the Reed-Solomon (RS) code. Anencoder/decoder utilizing the RS code is called an RS encoder/decoder.The RS code is briefly explained next.

RS codes are nonbinary codes, i.e., the unit thereof is not a binarybit, but rather a symbol made up of multiple binary bits. For example,in an 8-bit-byte system, each symbol (or byte) contains 8 binary bitsand an RS code contains a number of symbols. In the followingdescription, it is assumed that each symbol is composed of m binarybits, where m is an integer. A symbol containing m bits, a_(m−1),a_(m−2), . . . , a₀, may be represented by an (m−1)-degree polynomial,K(x)=a_(m−1)x^(m−1)+a_(m−2)x^(m−2)+ . . . +a₀, where x is theindeterminate. Thus, the collection of all 2^(m) possible m-bit symbolsconstitute a set {K(x)=a_(m−1)x^(m−1)+a_(m−2)x^(m−2)+ . . . +a₀}, wherea_(i) ∈{0,1} for i=0, 1, . . . , m−1.

Set {K(x)}, coupled with an addition operator (+) and a multiplicationoperator (×) defined thereupon, defines a finite field, or Galois field,which may be denoted as GF(2^(m)). Particularly, the addition of theelements of GF(2^(m)) (or elements of {K(x)}) is defined as a binaryaddition of the corresponding polynomials, where the coefficients of thesame powers in the corresponding polynomials are added modulo 2. Themodulo-2 addition is defined as a binary addition with no carry, forexample, 0+1=1, and 1+1=0. When two elements of GF(2^(m)) aremultiplied, the corresponding polynomials are multiplied and reduced toa residue modulo f(x), i.e., multiples of f(x) are reduced to 0. Heref(x) is an m-degree primitive polynomial of GF(2^(m)), which bydefinition is irreducible and divides x^(n)+1 when n=2^(m)−1, but doesnot divide x^(n)+1 when n<2^(m)−1. Thus, the addition or multiplicationof two elements of GF(2^(m)) generates a polynomial of order not greaterthan m−1, which corresponds to another element of GF(2^(m)).

It is well known that GF(2^(m)) as defined above includes a so-calledprimitive element α that is a root of f(x), and every element ofGF(2^(m)) except 0 is a power of α. Because f(x) divides x² ^(m) ⁻¹+1,there is α² ^(m) ⁻¹=1 (note that this is equivalent to saying α² ^(m)⁻¹+1=0 in binary arithmetic). Thus, the elements of GF(2^(m)) are 0,1(=α⁰), α¹, . . . , α² ^(m) ⁻².

With each element of GF(2^(m)) representing an m-bit symbol, a datasequence containing a sequence of symbols may be represented by a vectorincluding a sequence of elements of GF(2^(m)). For example, a sequenceof symbols represented by n (n being an integer) elements of GF(2^(m)),c_(n−1), c_(n−2), . . . , c₀, form an n-degree vector C over GF(2^(m)),(c_(n−1), c_(n−2), . . . , c₀. C may be further represented by apolynomial with the sequence of elements of GF(2^(m)) as coefficients ofthe polynomial, i.e., C(x)=c_(n−1)x^(n−1)+c_(n−2)x^(n−2)+ . . . +c₀.

According to the conventional method for RS encoding, redundant symbolsare added to a message block to form an RS code, where the redundantsymbols and the symbols of the message block satisfy a predeterminedcondition. The RS code is then transmitted through a channel. A receiverreceives the transmitted RS code and determines if the RS code has beencorrupted by evaluating whether the received RS code still satisfies thesame condition. The receiver corrects any error in the received RS codeand extracts the message block therefrom.

Particularly, when a message block M containing k symbols, m_(k−1),m_(k−2), . . . , m₀, is encoded, a parity sequence P containing a numberof redundant symbols (also called parity symbols) is appended to the endof message block M to form an n-degree vector C, where 0<k<n<2^(m)+2.Thus, vector C includes k message symbols of message block M, m_(k−1),m_(k−2), . . . , m₀, followed by n−k parity symbols, p_(n−k−1),p_(n−k−2), . . . , p₀, and may be expressed as

$\begin{matrix}\begin{matrix}{{C(x)} = {{m_{k - 1}x^{n - 1}} + {m_{k - 2}x^{n - 2}} + \ldots + {m_{0}x^{n - k}} +}} \\{{p_{n - k - 1}x^{n - k - 1}} + {p_{n - k - 2}x^{n - k - 2}} + \ldots + p_{0}} \\{= {{x^{n - k}{M(x)}} + {{P(x)}.}}}\end{matrix} & (1)\end{matrix}$The encoding is carried out such that C(x) is divisible by a generatorpolynomial

$\begin{matrix}{{{g(x)} = {\prod\limits_{i = 1}^{l + n - k - 1}\;\left( {x - \alpha^{\mathbb{i}}} \right)}},{i.e.},{{g(x)}❘{C(x)}},} & (2)\end{matrix}$where l is called the offset and may be any integer. In the following,it is assumed that l=1 for simplicity. If C satisfies condition (2), Cis called a valid codeword or a codeword. It is well known that an RScode is cyclic, meaning that if an n-symbol sequence C, c_(n−1),c_(n−2), . . . , c₀, is a valid codeword, then when C is shifted by bsymbols to generate a new sequence C_(b), c_(n−b−1), c_(n−b−2), . . . ,c₀, c_(n−1), c_(n−2), . . . , c_(n−b), C_(b) is also a valid codeword,where b is any integer.

After encoding, vector C is transmitted through the channel.

At the decoder side, a vector R corresponding to codeword C is receivedand includes r_(n−1), r_(n−2), . . . , r₀, which may differ from theoriginal n symbols of C, m_(k−1), m_(k−2), . . . , m₀, p_(n−k−1),p_(n−k−2), . . . , p₀, due to noise in the channel. The decoder thendecodes R to recover C as follows.

First, syndromes are computed for R. Syndromes of R are defined asS_(i)=R(α^(i+1)) for i=0, 1, . . . , n−k−1, where R(x) is the polynomialrepresentation of R:R(x)=r _(n−1) x ^(n−1) +r _(n−2) x ^(n−2) + . . . +r ₀.  (3)From (2), if no error occurs in the received vector R, S_(i) should be 0for i=0, 1, . . . , n−k−1, because g(x)|(R(x)=C(x)). However, if it isassumed there are t errors occurring at unknown locations j₁, j₂, . . ., j_(t), and the errors in the received symbols of R at these locationshave values e₁, e₂, . . . , e_(t), where e_(i)=r_(j) _(i) −c_(j) _(i) ,for i=1, 2, . . . , t, then there is:R(x)=C(x)+e(x),  (4)where e(x)=e₁x^(j) ¹ +e₂x^(j) ² + . . . +e_(t)x^(j) ^(t) , is the errorpolynomial. For convenience, error locator numbers β₁, β₂, . . . ,β_(t), are defined as followsβ_(i)=α^(j) ^(i) , for i=1, 2, . . . , t.  (5)Combining (2), (4), and (5), there are:S ₀ =e ₁β₁ +e ₂β₂ + . . . , +e _(t)β_(t),S ₁ =e ₁β₁ ² +e ₂β₂ ² + . . . +e _(t)β_(t) ²,. . .S _(n−k−1) =e ₁β₁ ^(n−k) +e ₂β₂ ^(n−k) + . . . +e _(t)β_(t) ^(n−k).  (6)

Because there are 2t unknowns, e₁, e₂, . . . , e_(t), β₁β₂, . . . ,β_(t), and (6) has n−k equations, a solution may be found if n−k≧2t. Inother words, the RS code can correct up to └(n−k)/2┘ errors, where └x┘is the floor function which gives the greatest integer not greater thanx.

To facilitate solving the equations in (6), an error locator polynomialσ(x) is defined as

$\begin{matrix}{{{\sigma(x)} = {{\prod\limits_{i = 1}^{t}\left( {1 - {\beta_{i}x}} \right)} = {\sum\limits_{i = 0}^{t}{\sigma_{i}x^{i}}}}},} & (7)\end{matrix}$an error evaluator polynomial ω(x) is defined as

$\begin{matrix}{{{\omega(x)} = {{\sum\limits_{j = 1}^{t}{e_{j}\beta_{j}{\underset{i \neq j}{\prod\limits_{i = 1}^{t}}\left( {1 - {\beta_{i}x}} \right)}}} = {\sum\limits_{i = 0}^{t - 1}{\omega_{i}x^{i}}}}},} & (8)\end{matrix}$and a syndrome polynomial S(x) is defined as

$\begin{matrix}{{S(x)} = {\sum\limits_{i = 0}^{n - k - 1}{S_{i}{x^{i}.}}}} & (9)\end{matrix}$From (6)-(9), there isS(x)σ(x)=ω(x) mod x ^(n−k).  (10)

Equation (10) is called the key equation, and may be solved by acomputer system applying a modified Euclidean (ME) algorithm to findσ(x) and ω(x). After σ(x) and ω(x) are determined, the location of theerrors are determined by determining the roots of σ(x), which may becarried out by performing a Chien search. The Chien search simplycomputes the value of σ(x) at points α⁰, α⁻¹, . . . , α^(−(n−1)). Notethat, because α² ^(m) ⁻¹=1, evaluating σ(x) at points α⁰, α⁻¹, . . . ,α^(−(n−1)) is equivalent to evaluating σ(x) at points α⁰=α² ^(m) ⁻¹, α²^(m) ⁻², . . . , α² ^(m) ^(−n). By definition of σ(x) in (7), if anerror occurs at location j_(i), then σ(β_(i) ⁻¹)=σ(α^(−j) ^(i) )=0. Ifσ(α⁻¹)≠0, then no error took place at location i. Also, from (7) and(8), the error values may be computed according to the followingexpression for a Forney algorithm:

$\begin{matrix}{e_{i} = \left\{ {\begin{matrix}{0,} & {{{if}\mspace{14mu}{\sigma\left( \alpha^{- i} \right)}} \neq 0} \\{\frac{\omega\left( \alpha^{- i} \right)}{\sigma^{\prime}\left( \alpha^{- i} \right)},} & {{{if}\mspace{14mu}{\sigma\left( \alpha^{- i} \right)}} = 0}\end{matrix},} \right.} & (11)\end{matrix}$for i=1, 2, . . . , t, where σ′(x) is the derivative of σ(x):

$\begin{matrix}{{\sigma^{\prime}(x)} = {- {\sum\limits_{j = 1}^{t}{\beta_{j}{\underset{i \neq j}{\prod\limits_{i = 1}^{t}}{\left( {1 - {\beta_{i}x}} \right).}}}}}} & (12)\end{matrix}$

If l≠1, there is

$\begin{matrix}{e_{i} = \left\{ {\begin{matrix}{0,} & {{{if}\mspace{14mu}{\sigma\left( \alpha^{- i} \right)}} \neq 0} \\{\frac{{- \alpha^{- {i{({l - 1})}}}}{\omega\left( \alpha^{- i} \right)}}{\sigma^{\prime}\left( \alpha^{- i} \right)},} & {{{if}\mspace{14mu}{\sigma\left( \alpha^{- i} \right)}} = 0}\end{matrix}.} \right.} & \left( {11\text{-}1} \right)\end{matrix}$

The errors are then subtracted from R, i.e., c_(i)=r_(j) _(i) −e_(j)_(i) , for i=1, 2, . . . , t, to generate the correct codeword C.

In “High-Speed VLSI Architecture for Parallel Reed-Solomon Decoder,”Hanho Lee, IEEE Trans. on Very Large Scale Integration Systems, v. 11,No. 2, April 2003, pp. 288-294 (“Lee”), the entire contents of which areincorporated herein by reference, an RS decoder implementing the abovedecoding method was proposed. The RS decoder of Lee is briefly discussedherein, with reference to the figures of Lee, which are reproduced hereas FIGS. 1, 2A-2B, 3A-3B, and 4A-4C.

FIG. 1 shows a digital communications system including the RS decoder.An encoder encodes k symbols to generate an n-symbol codeword. Then-symbol codeword is transmitted through a channel and is received bythe decoder. The decoder includes two parts: an error detection part andan error correction part. In the error detection part, a syndromecomputation block computes the n−k syndromes. In the error correctionpart, a modified Euclidean (ME) algorithm block generates theerror-locator polynomial σ(x) and the error-evaluator polynomial ω(x),using the n−k syndromes. The error-locator polynomial σ(x) and theerror-evaluator polynomial ω(x) are sent to a Chien search block, whichcomputes σ(x) and σ′(x) at points α⁰, α¹, . . . , α^(n−1). A Forneyalgorithm block then computes the error values based on ω(x) and σ′(x).An Error correction block finally corrects the received vector R usingthe error locations and the error values.

FIGS. 2A-2B, 3A-3B, and 4A-4C show the detailed logic diagrams of thedecoder. FIGS. 2A and 2B show the logic diagrams of the syndromecomputation block where FIG. 2A shows a syndrome calculation cell andFIG. 2B shows a total of 16 syndrome cells of FIG. 2A connected inseries for calculating 16 syndromes (n−k=16). As shown in FIG. 2A, the nsymbols of R are input into each syndrome calculation cell forcalculating the corresponding syndrome. As shown in FIG. 2B, the 16syndromes are output serially.

FIGS. 3A and 3B show the logic diagrams of the ME algorithm block, whereFIG. 3A shows an ME processing element (PE) and FIG. 3B shows 16 MEPE's, PE1, PE2, . . . , PE16, connected in series for calculating σ(x)and ω(x). The ME algorithm applied in Lee is summarized as follows:

-   -   1. First, let R₀(x)=x^(n−k), Q₀(x)=S(x), L₀(x)=0, U₀(x)=1    -   2. Repeat the calculation of R_(i)(x), Q_(i)(x), L_(i)(x),        U_(i)(x), i being the index starting from 1, where for each i-th        iteration,        R _(i)(x)=[λ_(i−1) b _(i−1) R _(i−1)(x)+ λ _(i−1) a _(i−1) Q        _(i−1)(x)]−x ^(|l) ^(i−1) ^(|)[λ_(i−1) a _(i−1) Q _(i−1)(x)+ λ        _(i−1) b _(i−1) R _(i−1)(x)],        Q _(i)(x)=λ_(i−1) Q _(i−1)(x)+ λ _(i−1) R _(i−1)(x),        L _(i)(x)=[λ_(i−1) b _(i−1) L _(i−1)(x)+ λ _(i−1) a _(i−1) U        _(i−1)(x)]−x ^(|l) ^(i−1) ^(|)[λ_(i−1) a _(i−1) U _(i−1)(x)+ λ        _(i−1) b _(i−1) L _(i−1)(x)],        U _(i)(x)=λ_(i−1) U _(i−1)(x)+ λ _(i−1) L _(i−1)(x),        where a_(i−1), and b_(i−1) are the leading coefficients of        R_(i−1)(x) and Q⁻¹(x), respectively, and

l_(i − 1) = deg (R_(i − 1)(x)) − deg (Q_(i − 1)(x)), and$\lambda_{i - 1} = \left\{ {\begin{matrix}{1,} & {{{if}\mspace{14mu} l_{i - 1}} \geq 0} \\{0,} & {{{if}\mspace{14mu} l_{i - 1}} < 0}\end{matrix}.} \right.$The reiteration of step 2 stops when deg(R_(i)(x))<└(n−k)/2┘;

-   -   3. ω(x)=R_(i)(x), and σ(x)=L_(i)(x).        FIG. 3A shows that the ME PE includes two parts, a degree        computation (DC) block and a polynomial arithmetic (PA) block.        The DC block computes the degrees of R_(i)(x) and Q_(i)(x) and        also calculates λ_(i). The PA block calculates R_(i)(x),        Q_(i)(x), L_(i)(x), U_(i)(x).

When σ(x) is determined, the coefficients thereof, σ₀, σ₁, . . . ,σ_(t), are sent to the Chien search block for evaluating σ(x) and σ′(x)for x=α⁰, α¹, . . . , α^(n−1), as shown in FIG. 4A. Because in binaryarithmetic, A(x)+A(x)=0, there is xσ′(x)=σ_(odd)(x). Thus, as shown inFIG. 4A, σ′(x) may be calculated at the same time σ(x) is calculated.The Chien search cells, labeled as C_(i) in FIG. 4A, compute the i-thterm in σ(x) or σ′(x), and the result of all the Chien search cells aresummed up to generate σ(x) and σ′(x). FIG. 4B shows the detail of thei-th Chien search cell. The Chien search block outputs in series σ(α⁰),σ(α¹), . . . , σ(α^(n−1)).

Similarly, the coefficients of ω(x), ω₀, ω₁, . . . , ω_(i−1), are sentto the Forney algorithm block, as shown in FIG. 4C, for the calculationof ω(x) for x=α⁰, α¹, . . . , α^(n−1). The Forney algorithm block ofFIG. 4C also computes the error values according to expression (11),based on the results of σ(x), σ′(x), and ω(x). The error values are thenadded to the received n symbols of R to generate the correct codeword C.

An RS code that encodes k-symbol message blocks and generates n-symbolcodewords, where 0<k<n<2^(m)+2, is referred to as an RS(n, k) code. AnRS(n, k) code includes r=n−k parity symbols in each codeword. Generally,n=2^(m)−1. For example, in an 8-bit-symbol system, a standard RS code(also called a mother RS code), RS(255, 239), encodes 239-symbol messageblocks into 255-symbol codewords.

In order to offer different coding rates, RS(n, k) codes are frequentlymodified to generate RS(n′, k′) codes for encoding and decodingk′-symbol message blocks, where n′<n, k′<k, and k′<n′, throughshortening and puncturing. FIGS. 5A-5B illustrate the shortening andpuncturing of an RS(n, k) code into an RS(n′, k′) code. The shorteningof the code is carried out by setting k−k′ symbols (“shortened symbols”)in each codeword to be predetermined symbols, such as 0's. An encodertreats the k′ symbols of a message block and the predetermined k−k′symbols as a k-symbol message block and generates r parity symbols. Thepuncturing of the code is then carried out by erasing/puncturing ssymbols of the n−k parity symbols, where s=r−r′=(n−k)−(n′−k′). The k−k′shortened symbols and s punctured parity symbols are not transmitted.Thus, only n′ symbols are transmitted for each codeword, including k′message symbols and r′ parity symbols.

When a shortened/punctured vector R′ including n′ symbols, r_(n′−1),r_(n′−2), . . . , r₀, is received, the decoder reconstructs acorresponding n-symbol vector R, by adding the shortened k−k′ symbolsand the punctured s parity symbols to the n′ symbols of R′. The valuesand positions of the shortened symbols are known. The values of thepunctured s parity symbols are unknown; however, their positions arepredetermined and known to the decoder. The positions of the shortenedand erased symbols may be randomly chosen. However, generally the firstk−k′ symbols of each codeword are chosen for shortening and the last sparity symbols are chosen for puncturing, as shown in FIGS. 5A and 5B.Also, for convenience and simplicity, the shortened symbols are 0's andthe decoder assumes the erased symbols also to be 0's. Thus, thereconstructed vector R includes n symbols, 0, 0 , . . . , 0, r_(n′−1),r_(n′−2), . . . , r₀, 0, 0, . . . , 0, where there are k−k′ 0's beforer_(n′−1), and s 0's after r₀. The decoder then decodes R to find theerror/erasure values therein to generate the correct codeword, asdiscussed below.

When both erasures and errors are present, the decoding processdiscussed above must also address the erasures. First, when R isreconstructed, syndromes may be calculated using the syndromecomputation block of FIGS. 2A-2B: S_(i)=R_(s)(α^(i+1)) for i=0, 1, . . ., n−k−1, where R(x)=r_(n′−1)x^(s+n′−1)+r_(n′−2)x^(s+n′−2)+ . . .+r₀x^(s). Assuming vector R includes t errors at positions j₁, j₂, . . ., j_(t), and s erasures at positions j_(t+1), j_(t+2), . . . , j_(t+s),and the error/erasure values e₁, e₂, . . . , e_(t+s) then e(x)=e₁x^(j) ¹+e₂x^(j) ² + . . . +e_(t+s)x^(j) ^(t+s) is the error/erasure polynomial,where e_(i)=r_(j) _(i) −c_(j) _(i) , for i=1, 2, . . . , t, and,e_(i)=c_(j) _(i) , for i=t+1t+2, . . . , t+s. Let β_(i)=α^(j) ^(i) , fori=1, 2, . . . , t+s, thenS ₀ =e ₁β₁ +e ₂β₂ + . . . +e _(t+s)β_(t+s),S ₁ =e ₁β₁ ² +e ₂β₂ ² + . . . +e _(t+s)β_(t+s) ²,. . .S _(n−k−1) =e ₁β₁ ^(n−k) +e ₂β₂ ^(n−k) + . . . +e _(t+s)β_(t+s)^(n−k).  (13)Because the locations of the erasures are known, β_(t−1), β_(t−s), . . ., β_(t−s) are known parameters and may be computed before the decodingprocess starts. Particularly, in the example above, the last r−r′ paritysymbols are erased; therefore, j_(t+1)=r−r′−1, j_(t+2)=r−r′−2, . . . ,j_(t+s), and s=r−r′. There are n−k equations in (13) containing 2t+sunknowns. Thus, equations (13) have a solution if n−k≧2t+s. In otherwords, an RS(n′, k′) code is capable of correcting t errors and serasures, provided that n−k≧2t+s.

The error/erasure locator polynomial σ(x) is defined as

$\begin{matrix}{{{\sigma(x)} = {\sigma_{0} = {{(x){\sigma_{1}(x)}} = {\sum\limits_{i = 0}^{t + s}{\sigma_{i}x^{i}}}}}},} & (14)\end{matrix}$where

${\sigma_{0}(x)} = {\prod\limits_{i = {t + 1}}^{t + s}\;\left( {1 - {\beta_{i}x}} \right)}$is the erasure locator polynomial, which may be computed before thedecoding process, and

${\sigma_{1}(x)} = {\prod\limits_{i = 1}^{t}\;\left( {1 - {\beta_{i}x}} \right)}$is the error locator polynomial. The error/erasure evaluator polynomialω(x) is defined as

$\begin{matrix}{{\omega(x)} = {{\sum\limits_{j = 1}^{t + s}{e_{j}\beta_{j}{\underset{i \neq j}{\prod\limits_{i = 1}^{t + s}}\;\left( {{\beta_{i}x} - 1} \right)}}} = {\sum\limits_{i = 0}^{t + s - 1}{\omega_{i}{x^{i}.}}}}} & (15)\end{matrix}$From (9) and (13)-(15), there isS(x)σ(x)=ω(x) mod x ^(n−k),  (16)orS(x)σ₀(x)σ₁(x)=ω(x) mod x ^(n−k).  (17)A modified syndrome polynomial S₀(x) may be defined as:S ₀(x)=S(x)σ₀(x).  (18)After the syndromes S_(i) are calculated, the modified syndromepolynomial S₀(x) may be calculated according to Expression (18). The keyequation is modified as follows:S ₀(x)σ₁(x)=ω(x) mod x ^(n−k).  (19)

The modified key equation may then be solve according to the MEalgorithm using the ME algorithm block of FIGS. 3A and 3B, generatingthe error locator polynomial σ₁(x) and error/erasure evaluatorpolynomial ω(x). Then, the error/erasure locator polynomial σ(x) iscalculated according to equation (14), and a Chien search and Forneyalgorithm (expression (11) above) are performed to find the locations ofthe errors and the values of the errors and erasures, which are used torecover the correct codeword.

TABLE 1 Rate ID Modulation RS(n′, k′) 0 QPSK (32, 24) 1 QPSK (40, 36) 216QAM (64, 48) 3 16QAM (80, 72) 4 64QAM (108, 96)  5 64QAM (120, 108)

The IEEE 802.16a standard provides six standard shortened/punctured RScodes of a mother code RS(255, 239), as shown in Table 1. The firstcolumn, Rate ID, is for identification purposes. The second column showsthe modulation schemes, where QPSK stands for quadrature phase shiftkeying, and QAM stands for quadrature amplitude modulation. The thirdcolumn shows the resultant RS(n′, k′) codes.

SUMMARY OF THE INVENTION

Consistent with embodiments of the present invention, there is provideda decoder suitable for use in a digital communications system utilizingan RS(n′, k′) code modified from an RS(n, k) code receives n′-symbolvectors each including k′ message symbols and r′=n′−k′ parity symbolsand decodes the n′-symbol vectors to correct errors therein, wherein n,k, n′, and k′ are integers, and k′<n′<n, k′<k<n, and wherein the decoderstores one erasure locator polynomial σ₀(x). The decoder includes asyndrome calculator for receiving the n′-symbol vectors and forcalculating syndromes of each n′-symbol vector, wherein the i-thsyndrome S_(i) of one n′-symbol vector R′, (r_(n′−1), r_(n′−2), . . . ,r₀), is S_(i)=R_(s)(α^(i+1)) for i=0, 1, . . . , n−k−1, whereinR_(s)(x)=r_(n′−1)x^(n′−1)+r_(n′−2)x^(n′−2)+ . . . +r₀, and means forfinding the locations and values of the errors in each n′-symbol vectorusing the syndromes thereof and the one erasure locator polynomialσ₀(x).

Consistent with embodiments of the present invention, there is alsoprovided a digital communications system utilizing an RS(n′, k′) codemodified from an RS(n, k) code, wherein n, k, n′, and k′ are integers,and k′<n′<n, k′<k<n. The system includes a channel for datatransmission, a transmitter for encoding k′-symbol message blocks inton-symbol codewords and transmitting n′ symbols of each codeword into thechannel, and a receiver for receiving and decoding n′-symbol vectorseach corresponding to the n′ symbols of one codeword transmitted by thetransmitter. The receiver includes a memory device having store thereinone erasure locator polynomial σ₀(x) and look-up tables, a syndromecalculator for receiving the n′-symbol vectors and for calculatingsyndromes of each n′-symbol vector, wherein the i-th syndrome S_(i) ofone n′-symbol vector R′, (r_(n′−1), r_(n′−2), . . . , r₀), isS_(i)=R_(s)(α^(i+1)) for i=0, 1, . . . , n−k−1, whereinR_(s)(x)=r_(n′−1)x^(n′−1)+r_(n′−2)x^(n′−2)+ . . . +r₀, and means forfinding the locations and values of the errors in each n′-symbol vectorusing the syndromes thereof and the one erasure locator polynomialσ₀(x).

Consistent with embodiments of the present invention, there is stillprovided a method performed by a decoder for decoding an RS(n′, k′) codemodified from an RS(n, k) code, wherein n, k, n′, and k′ are integers,and k′<n′<n, k′<k<n. The method includes storing one erasure locatorpolynomial σ₀(x) in the decoder, receiving n′-symbol vectors eachcorresponding to a k′-symbol message block, and decoding the n′-symbolvectors. Furthermore, decoding each n′-symbol vector R′, (r_(n′−1),r_(n′−2), . . . , r₀) includes calculating syndromes of R′, wherein thei-th syndrome S_(i) is S_(i)=R_(s)(α^(i+1)) for i=0, 1, . . . , n−k−1,wherein R_(s)(x)=r_(n′−1)x^(n′−1)+r_(n′−2)x^(′−2)+ . . . +r₀, andfinding the locations and values of errors in R′ using the syndromesthereof and the one erasure locator polynomial σ₀(x).

Additional features and advantages of the invention will be set forth inpart in the description which follows, and in part will be obvious fromthe description, or may be learned by practice of the invention. Thefeatures and advantages of the invention will be realized and attainedby means of the elements and combinations particularly pointed out inthe appended claims.

It is to be understood that both the foregoing general description andthe following detailed description are exemplary and explanatory onlyand are not restrictive of the invention, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate embodiments of the invention and,together with the description, serve to explain the objects, advantages,and principles of the invention.

In the drawings,

FIG. 1 shows a conventional digital communications system, a decoder ofthe system including a syndrome computation block, a modified Euclidean(ME) algorithm block, a Chien search block, and a Forney algorithmblock;

FIGS. 2A and 2B show logic diagrams of the syndrome computation block ofFIG. 1;

FIGS. 3A and 3B show logic diagrams of the ME algorithm block of FIG. 1;

FIGS. 4A-4B show logic diagrams of the Chien search block of FIG. 1;

FIG. 4C shows a logic diagram of the Forney algorithm block of FIG. 1;

FIGS. 5A-5B illustrate shortening and puncturing of an RS(n, k) codeinto an RS(n′, k′) code;

FIG. 6 illustrates the formation of a shifted vector consistent withembodiments of the present invention;

FIG. 7A shows a digital communications system consistent withembodiments of the present invention;

FIG. 7B shows a block diagram of a decoder used in the digitalcommunications system of FIG. 7A;

FIGS. 8A and 8B show a syndrome calculator used in the digitalcommunications system of FIG. 7A;

FIG. 9 shows a modified syndrome calculator used in the digitalcommunications system of FIG. 7A;

FIGS. 10A and 10B illustrate a further modified Euclidean algorithmconsistent with embodiments of the present invention;

FIG. 11 shows a modified Euclidean processor used in the digitalcommunications system of FIG. 7A;

FIG. 12 shows an index adjustment circuit used in the digitalcommunications system of FIG. 7A;

FIG. 13A shows a Chien search block used in the digital communicationssystem of FIG. 7A;

FIG. 13B shows a Forney algorithm block used in the digitalcommunications system of FIG. 7A; and

FIG. 13C shows a calculation cell used in the Chien search block of FIG.13A and the Forney algorithm block of FIG. 13B.

DESCRIPTION OF THE EMBODIMENTS

Reference will now be made in detail to preferred embodiments of theinvention, examples of which are illustrated in the accompanyingdrawings. Wherever possible, the same reference numbers will be usedthroughout the drawings to refer to the same or like parts.

Embodiments consistent with the present invention provide a novelhardware implementation of a modified Reed-Solomon decoder for decodingmodified RS codes.

In the following, it is assumed that an RS(n, k) code is defined overthe Galois Field GF(2^(m)) and generated by a generator polynomial

${{g(x)} = {\prod\limits_{i = 1}^{l + n - k - 1}\left( {x - \alpha^{i}} \right)}},$where l is an offset, and α is the primitive element of GF(2^(m)) and isa root of an m-degree primitive polynomial f(x). Therefore, GF(2^(m))includes 0, 1(=α⁰), α¹, . . . , α² ^(m) ⁻². Particularly in the IEEE802.16a standard, n=255, k=239, r=n−k=16, m=8, l=0, and

${g(x)} = {\prod\limits_{i = 0}^{n - k - 1}{\left( {x - \alpha^{i}} \right).}}$

It is also assumed that the RS(n, k) code is modified into an RS(n′, k′)code by shortening the first k−k′ symbols thereof and puncturing thelast s=r−r′ parity symbols, where n′<n, k′<k, k′<n′, r=n−k, r′=n′−k′.The shortened k−k′ symbols are assumed to be 0's. A receiver receives ann′-symbol vector R′, (r_(n′−1), r_(n′−2), . . . , r₀), for each codewordand performs decoding to recover the original k′-symbol message blocks.For example, in the IEEE 802.16a standard, s may be 4, 8, or 12 (seeTable 1).

A digital communications system 700 consistent with the presentinvention is shown in FIG. 7A. System 700 includes anencoder/transmitter 702, a decoder/receiver 704, and a channel 706therebetween. For each k′-symbol message block, encoder/transmitter 702generates n−k parity symbols corresponding to a k-symbol sequenceincluding the shortened k−k′ symbols (0's) and the k′ symbols of themessage block, puncturing the last s parity symbols, and transmittingthe resultant n′-symbol vector into channel 706.

Decoder/receiver 704 receives a garbled n′-symbol vector and performsdecoding to correct errors therein. FIG. 7B shows a block diagram ofdecoder 704, which receives an n′-symbol vector R′, (r_(n′−1), r_(n′−2),. . . , r₀), and outputs the corrected vector C, (c_(n′−1), c_(n′−2), .. . , c₀). Decoder 704 includes a syndrome calculator 708, a modifiedsyndrome calculator 710, a key equation solver 712, a Chien search block714, a Forney algorithm block 716, and an error correction block 718.Decoder 704 also includes a first-in-first-out (FIFO) buffer 719 thatbuffers the n′ symbols of R′, r_(n′−1), r_(n′−2), . . . r₀, to becorrected in error correction block 718. Decoder 704 may further includea memory 720 for storing predetermined data or look-up tables. Also, asshown in FIG. 7B, decoder 704 includes an index adjustment circuit 721for adjusting the index of the n′ symbols. The details of each part ofdecoder 704 and the decoding process are discussed below.

To find the errors in n′-symbol vector R′, a corresponding n-symbolvector R is constructed by adding k−k′ 0's to the beginning of R′, andadding the s punctured parity symbols to the end of R′. For convenience,the s punctured parity symbols are assumed to be 0. Thus, the n symbolsof R are 0, 0, . . . , 0, r_(n′−1), r_(n′−2), . . . , r₀, 0, 0, . . . ,0, where there are k−k′ 0's before r_(n′−1) and s 0's following r₀. Ashifted vector R_(s) may be formed by shifting the erased (or punctured)s parity symbols of R to the beginning of R, as shown in FIG. 6. Thus,R_(s) includes n symbols, i.e., k−k′+s 0's representing both the erasedparity symbols and the shortened message symbols, followed by r_(n′−1),r_(n′−2), . . . , r₀. Because RS codes are cyclic, if R is a validcodeword, then R_(s) is also a valid codeword. Therefore, the errors inthe n′-symbol vector R′, (r_(n′−1), r_(n′−2), . . . , r₀), may becorrected by decoding R_(s), and decoder 704 operates to decode R_(s)instead of R.

First, syndromes of R_(s) are calculated: S_(i)=R_(s)(α^(i+1)) for i=0,1, . . . , n−k−1. Because the first n−n′ symbols of R_(s) are 0's,R_(s)(x)=r_(n′−1)x^(n′−1)+r_(n′−2)x^(′−2)+ . . . +r₀. Therefore, thecalculation of the syndromes of R_(s) may be carried out based solely onthe received n′ symbols of R′. Because each R′ corresponds to aparticular R_(s), syndromes of R_(s) are also called the syndromes of R′for convenience of illustration. FIGS. 8A and 8B show details ofsyndrome calculator 708 consistent with the present invention, whereFIG. 8A is a block diagram of syndrome calculator 708 including n−ksyndrome calculation cells 722 (722-0, 722-1, . . . , 722-(n−k)) and 16registers 724 (724-0, 724-1, . . . , 724-(n−k)), and FIG. 8B is a blockdiagram of the i-th syndrome calculation cell 722-i, for i=0˜(n−k). Asshown in FIGS. 8A and 8B, syndrome calculator 708 takes as input the n′symbols of R′ and, upon an enable signal (“OE”), serially outputs(S_(n−k−1), S_(n−k−2). . . , S₀). Each syndrome calculation cell 722-icalculates a corresponding syndrome S_(i) of R_(s). The results ofsyndrome calculation cells 722 are stored in registers 724. As comparedto the decoder of Lee, which requires the reception of n symbols, thedecoder consistent with the present invention only requires the n′symbols of R′ for the calculation of the syndromes. Accordingly, thenumber of clock cycles required by the syndrome calculator consistentwith the present invention is n′ instead of n.

Next, modified syndrome polynomial S₀(x) is computed: S₀(x)=S(x)σ₀(x),where

${\sigma_{0}(x)} = {{\left( {1 - {\alpha^{n - s}x}} \right)\left( {1 - {\alpha^{n - {({s - 1})}}x}} \right)\mspace{11mu}\ldots\mspace{11mu}\left( {1 - {\alpha^{n - 1}x}} \right)} = {\sum\limits_{i = 0}^{s}{\sigma_{0,i}{x^{i}.}}}}$FIG. 9 is a block diagram of modified syndrome calculator 710 forcalculating modified syndrome polynomial S₀(x), which will now beunderstood by one skilled in the art and is not discussed in detail. Thecalculation of σ₀(x) does not require any data and may be stored inmemory 720 of decoder 704. A decoder consistent with embodiments of thepresent invention may be suitable to decode a plurality of modified RScodes each corresponding to an erasure locator polynomial, in which casethe decoder may store the erasure locator polynomials for all of theplurality of modified RS codes. When a particular RS(n′, k′) code isused, a corresponding erasure locator polynomial σ₀(x) is chosen fromthe stored erasure locator polynomials. For example, a decoder fordecoding the six standard shortened/punctured RS codes of the IEEE802.16a standard may store erasure locator polynomials σ₀(x) for allthree possible s values of 4, 8, 12.

Assume R′ includes t errors at positions j₁, j₂, . . . , j_(t), thenR_(s) includes t errors and s erasures, where the s erasures occur atpositions j_(t+1)=n−s, J_(t+2)=n−(s−1), . . . , j_(t+s)=n. Assume theerror/erasure values are e₁, e₂, . . . , e_(t+s), where e_(i)=r_(j) _(i)−c_(j) _(i) , for i=1, 2, . . . , t+s, then e(x)=e₁x^(j) ¹ +e₂x^(j) ² +. . . +e_(t+s)x^(j) ^(t+s) . Let

${\beta_{i} = \alpha^{j_{i}}},{{{for}\mspace{14mu} i} = 1},2,\ldots\mspace{14mu},{t + s},{{{then}\mspace{14mu} S_{i}} = {{e\left( \alpha^{i + 1} \right)} = {\sum\limits_{j = 1}^{t + s}{e_{j}\beta_{j}^{i}}}}},{{{for}\mspace{14mu} i} = 0},1,\ldots\mspace{14mu},{n - k - 1.}$The key equation is:S(x)σ(x)=ω(x) mod x ^(n−k),  (21)where

${{S(x)} = {\sum\limits_{i = 0}^{n - k - 1}{S_{i}x^{i}}}},{{\sigma(x)} = {{\prod\limits_{i = 1}^{t + s}\;\left( {1 - {\beta_{i}x}} \right)} = {\sum\limits_{i = 0}^{t + s}{\sigma_{i}x^{i}}}}},{and}$${\omega(x)} = {{\sum\limits_{j = 1}^{t + s}{e_{j}\beta_{j}{\underset{i \neq j}{\prod\limits_{i = 1}^{t + s}}\left( {{\beta_{i}x} - 1} \right)}}} = {\sum\limits_{i = 0}^{t + s - 1}{\omega_{i}{x^{i}.}}}}$σ(x) may be further expressed as a product of the erasure locatorpolynomial σ₀(x) and the error locator polynomial σ₁(x), i.e.,

${{\sigma(x)} = {{\sigma_{0}(x)}{\sigma_{1}(x)}}},{{{where}\mspace{14mu}{\sigma_{1}(x)}} = {\prod\limits_{i = 1}^{t}\;{\left( {1 - {\beta_{i}x}} \right).}}}$The modified key equation is:S ₀(x)σ₁(x)=ω(x) mod x ^(n−k).  (22)

The modified key equation (22) may be solved using any suitablealgorithm such as Berlekamp-Massey algorithm or modified Euclideanalgorithm, etc. For example, the modified Euclidean (ME) algorithm ofLee may be further modified (“further modified Euclidean algorithm”)consistent with embodiments of the present invention for a moreefficient and compact hardware implementation. The further modifiedEuclidean algorithm is partly illustrated in FIGS. 10A and 10B and iscarried out as follows:

-   -   1. Initialization: Let A(x)=x^(n−k), B(x)=S₀(x), T₀(x)=0,        T₁(x)=1, stopping degree v=└(n′−k′)/2┘;    -   2. Division:    -   i. Calculate        Q=A_(deg A(x))/B_(deg B(x))=A_(deg A(x))(B_(deg B(x)))⁻¹ (FIG.        10A, 10), where A_(deg A(x)) and B_(deg B(x)) are the terms of        A(x) and B(x) with the highest degrees, respectively. The        inversion of B_(deg B(x)), (B_(deg B(x)))⁻¹, may be carried out        by looking up a table (FIG. 10A, 12), where the table may be        stored in memory 720;    -   ii. B_(new)(x)=A(x)−Q×B(x) (FIG. 10A, 14);    -   3. Multiplication: T_(new)(x)=T₀(x)−Q×T₁(x) (FIG. 10B, 16);    -   4. Stopping criteria:    -   i. If degT_(new)(x)≦v (FIG. 10B, 18), then set σ₁(x)=T_(new)(x)        (FIG. 10B, 20), ω(x)=B_(new)(x) (FIG. 10A, 22), and exit;    -   ii. Otherwise, set A(x)=B(x) (FIG. 10A, 24), B(x)=B_(new)(x)        (FIG. 10A, 26), T₀(x)=T₁(x) (FIG. 10B, 28), T₁(x)=T_(new)(x)        (FIG. 10B, 30), go to step 2 and repeat.

Thus, as shown in FIG. 11, key equation solver 712 implementing thefurther modified Euclidean algorithm may include a modified Euclideandivider 728 for performing the steps illustrated in FIG. 10A and amodified Euclidean multiplier 730 for performing the steps illustratedin FIG. 10B above. As shown in FIG. 11, key equation solver 712 receivesmodified syndrome polynomial S₀(x) as input and outputs error/erasureevaluator polynomial ω(x) at the output of modified Euclidean divider728. Modified Euclidean multiplier 730 outputs error-locator polynomialσ₁(x). Key equation solver 712 further includes an error/erasure locatorpolynomial calculator 732 which multiplies error-locator polynomialσ₁(x) with erasure-locator polynomial σ₀(x) to generate error/erasurelocator polynomial σ(x).

The coefficients of error/erasure locator polynomial σ(x), σ₀, σ₁, . . ., σ_(t+s), and the coefficients of error/erasure evaluator polynomialω(x), ω₀, ω₁, . . . , ω_(t+s−1), are sent to index adjustment circuit721 for index adjustment. FIG. 12 is a block diagram of index adjustmentcircuit 721, which receives as input σ(x) and ω(x) and generates anadjusted error/erasure locator polynomial {tilde over (σ)}(x) and anadjusted error/erasure evaluator polynomial {tilde over (ω)}(x), where

${{\overset{\sim}{\sigma}(x)} = {\sum\limits_{i = 0}^{t + s}{{\overset{\sim}{\sigma}}_{i}x^{i}}}},{{\overset{\sim}{\sigma}}_{i} = \left\{ {\begin{matrix}{{\sigma_{i}\alpha^{- {i{({n^{\prime} - 1})}}}},} & {{for}\mspace{14mu}{even}\mspace{14mu} i} \\{{\sigma_{i}\alpha^{{- {({i - 1})}}{({n^{\prime} - 1})}}},} & {{for}\mspace{14mu}{odd}\mspace{14mu} i}\end{matrix},{{\overset{\sim}{\omega}(x)} = {\sum\limits_{i = 0}^{t + s - 1}{{\overset{\sim}{\omega}}_{i}x^{i}}}},{{{and}\text{}{\overset{\sim}{\omega}}_{i}} = {\omega_{i}{\alpha^{- {i{({n^{\prime} - 1})}}}.}}}} \right.}$

The coefficients of adjusted error/erasure locator polynomial {tildeover (σ)}(x), {tilde over (σ)}₀, {tilde over (σ)}₁, . . . , {tilde over(σ)}_(t+s), and the coefficients of adjusted error/erasure evaluatorpolynomial {tilde over (ω)}(x), {tilde over (ω)}₀, {tilde over (ω)}₁, .. . , {tilde over (ω)}_(t+s−1), are sent to Chien search block 714 andForney algorithm block 716 for determining the error locations and theerror/erasure values. FIG. 13A is a logic diagram of Chien search block714 including a number of calculation cells, each labeled as C_(i),where i may be any integer from 0 to t+s. FIG. 13B shows a logic diagramof Forney algorithm block 716 also including a number of calculationcells C_(i). FIG. 13C shows the logic diagram of calculation cell C_(i)used in FIGS. 13A and 13B. It is assumed that t+s=14 in FIGS. 13A-13C.As shown in FIG. 13A, Chien search block 714 receives the coefficientsof {tilde over (σ)}(x), {tilde over (σ)}₀, {tilde over (σ)}₁, . . . ,{tilde over (σ)}_(t+s), and simultaneously calculates {tilde over(σ)}(x) and {tilde over (σ)}′(x) for x=α⁰, α¹, . . . , α^(n′−1).Particularly,

$\begin{matrix}{{{\overset{\sim}{\sigma}}^{\prime}\left( \alpha^{i} \right)} = {\sum\limits_{j = 0}^{\lfloor\frac{t + s - 1}{2}\rfloor}{{\overset{\sim}{\sigma}}_{{2j} + 1}\alpha^{2{j \cdot i}}}}} \\{= {\sum\limits_{j = 0}^{\lfloor\frac{t + s - 1}{2}\rfloor}{\sigma_{{2j} + 1}\alpha^{{- 2}{j{({n^{\prime} - 1 - i})}}}}}} \\{{= {\sigma^{\prime}\left( \alpha^{- {({n^{\prime} - 1 - i})}} \right)}},}\end{matrix}$ and $\begin{matrix}{{{\overset{\sim}{\sigma}}^{\prime}\left( \alpha^{i} \right)} = {{\sum\limits_{j = 0}^{\lfloor\frac{t + s}{2}\rfloor}{{\overset{\sim}{\sigma}}_{2j}\alpha^{2{j \cdot i}}}} + {\alpha^{- {({n^{\prime} - 1 - i})}}{\sigma^{\prime}\left( \alpha^{- {({n^{\prime} - 1 - i})}} \right)}}}} \\{= {{\sigma^{\prime}\left( \alpha^{- {({n^{\prime} - 1 - i})}} \right)}.}}\end{matrix}$

As shown in FIG. 13B, Forney algorithm block 716 receives thecoefficients of {tilde over (ω)}(x), {tilde over (ω)}₀, {tilde over(ω)}₁, . . . , {tilde over (ω)}_(t+s−1) and calculates {tilde over(ω)}(x) for x=α⁰, α¹, . . . , α^(n′−1). Particularly,

$\begin{matrix}{{\overset{\sim}{\omega}\left( \alpha^{i} \right)} = {\sum\limits_{j = 0}^{t + s}{{\overset{\sim}{\omega}}_{j}\alpha^{j \cdot i}}}} \\{= {\sum\limits_{j = 0}^{t + s}{\omega_{j}\alpha^{- {j{({n^{\prime} - 1 - i})}}}}}} \\{= {{\omega\left( \alpha^{- {({n^{\prime} - 1 - i})}} \right)}.}}\end{matrix}$Further as shown in FIG. 13B, if {tilde over (σ)}(α^(−i))≠0, there is noerror at position i. If {tilde over (σ)}(α^(−i))=0,

$\begin{matrix}{{\overset{\sim}{e}}_{i} = \frac{{- \alpha^{({n^{\prime} - 1})}}\alpha^{i}{\overset{\sim}{\omega}\left( \alpha^{i} \right)}}{{\overset{\sim}{\sigma}}^{\prime}\left( \alpha^{i} \right)}} \\{= \frac{{- \alpha^{({n^{\prime} - 1 - i})}}{\omega\left( \alpha^{- {({n^{\prime} - 1 - i})}} \right)}}{\sigma^{\prime}\left( \alpha^{- {({n^{\prime} - 1 - i})}} \right)}}\end{matrix}.$Therefore, the error/erasure values determined by Forney algorithm block716 of FIG. 13B are {tilde over (e)}_(i)=e_(n′−1−i). Because errorvalues {tilde over (e)}_(i) are computed in the order from {tilde over(e)}₀ to {tilde over (e)}_(n′−1), the actual error values e_(i) arecomputed and outputted in the order from e_(n′−1) to e₀. In other words,the order in which the error values are output is the same as the orderin which the corresponding symbols are received from FIFO buffer 719.Thus, the index adjustment discussed above and shown in FIG. 12facilitates the correction of the symbols of R′ without the need ofreversing the calculated error values e_(i).

When an RS(n′, k′) is used, where s parity symbols are punctured, the serased parity symbols do not have to be corrected because they do notcontain message symbols. Thus, as shown in FIGS. 13A and 13B, thedecoder consistent with the present invention only needs to identify theerrors in the received n′ symbols of R′, and Chien search block 714 andForney algorithm block 716 only need to evaluate {tilde over (σ)}(x) and{tilde over (ω)}(x) for x=α⁰, α¹, . . . , α^(n′−1). Accordingly, Chiensearch block 714 and Forney algorithm block 716 of the present inventiononly requires five clock cycles, which is less than required byconventional RS(n, k) decoders.

Moreover, the syndrome calculator 708 requires only n′ clock cycles, andthe modified Euclidean divider 728 of the present invention requiresonly three clock cycles, both fewer than required by conventional RS(n,k) decoders. The total number of clock cycles required by key equationsolver 712 consistent with the present invention requires much fewerclock cycles than that required by conventional RS(n, k) decoders. Forexample, when RS(120, 108) code of the IEEE 802.16a standard is used,the overall decoding process consistent with the present inventionrequires only about 250 clock cycles.

In addition, embodiments consistent with the present invention providefor a less complex circuit design. Particularly, fewer logic gates areneeded by the present invention than by conventional decoders.

In the above descriptions, a shifted vector R, is formed for eachn′-symbol vector R′ for the convenience of illustration. However, it isto be understood that the shift of R to generate R_(s) does not need tobe realized in hardware, as is clear from the detailed discussions ofdecoder 704 in the above. A decoder consistent with the presentinvention treats the n′ symbols of vector R′ as the last n′ symbols ofan n-symbol vector, assumes the first n−n′ symbols of the vector to be0, and decodes the n-symbol vector to identify the errors therein.

It will be apparent to those skilled in the art that variousmodifications and variations can be made in the disclosed processwithout departing from the scope or spirit of the invention. Otherembodiments of the invention will be apparent to those skilled in theart from consideration of the specification and practice of theinvention disclosed herein. It is intended that the specification andexamples be considered as exemplary only, with a true scope and spiritof the invention being indicated by the following claims.

1. A decoder suitable for use in a digital communications systemutilizing an RS(n′, k′) code modified from an RS(n, k) code, wherein thedecoder receives n′-symbol vectors each including k′ message symbols andr′=n′−k′ parity symbols and decodes the n′-symbol vectors to correcterrors therein, wherein n, k, n′, and k′ are integers, and k′<n′<n, k′<k<n, and wherein the decoder stores one erasure locator polynomial σ₀(x),the decoder comprising: a syndrome calculator for receiving then′-symbol vectors and for calculating syndromes of each n′-symbolvector, wherein the i-th syndrome S_(i) of one n′-symbol vector R′,(r_(n′−1), r_(n′−2), . . . , r₀), is S_(i)=R_(s)(α^(i+1)) for i=0, 1, .. . , n−k−1, wherein R_(s)(x)=r_(n′−1)x^(n′−1)+r_(n′−2)x^(n′−2)+ . . .+r₀; an index adjustment circuit for generating an adjustederror/erasure locator polynomial {tilde over (σ)}(x) and an adjustederror/erasure evaluator polynomial {tilde over (ω)}(x) based on thesyndromes calculated by the syndrome calculator; a memory device forstoring the one erasure locator polynomial σ₀(x) and a look-up table;and means for finding the locations and values of the errors in eachn′-symbol vector based on the adjusted error/erasure locator polynomial{tilde over (σ)}(x) and the adjusted error/erasure evaluator polynomial{tilde over (ω)}(x), using the look-up table.
 2. The decoder of claim 1,further comprising means for correcting the errors in the receivedn′-symbol vectors.
 3. The decoder of claim 1, wherein the decoder issuitable to decode a plurality of modified RS codes each correspondingto an erasure locator polynomial, the decoder stores the erasure locatorpolynomials for all of the plurality of modified RS codes, and the oneerasure locator polynomial {tilde over (σ)}₀(x) is selected from thestored erasure locator polynomials.
 4. The decoder of claim 1, furthercomprising a modified syndrome calculator for calculating a modifiedsyndrome polynomial S₀(x) based on the syndromes calculated by thesyndromes calculator and the one erasure locator polynomial, whereinS₀(x) = S(x)σ₀(x) and${S(x)} = {\sum\limits_{i = 1}^{n - k - 1}{S_{i}{x^{i}.}}}$
 5. Thedecoder of claim 4, further comprising a key equation solver for solvinga key equation to generate an error/erasure locator polynomial σ(x) andan error/erasure evaluator polynomial ω(x), wherein the key equation isS₀(x)σ₁(x)=ω(x) mod x^(n−k), and σ(x)=σ₀(x)σ₁(x), and wherein σ₁(x) isan error locator polynomial.
 6. The decoder of claim 5, wherein the keyequation solver comprises a modified Euclidean algorithm processor (MEprocessor) including a modified Euclidean divider for computing theerror/erasure evaluator polynomial ω(x), a modified Euclidean multiplierfor computing the error locator polynomial σ₁(x), and an error/erasurelocator polynomial calculator for calculating the error/erasure locatorpolynomial σ(x).
 7. The decoder of claim 5, wherein the index adjustmentcircuit is configured to generate the adjusted error/erasure locatorpolynomial {tilde over (σ)}(x) and the adjusted error/erasure evaluatorpolynomial {tilde over (ω)}(x) based on the error/erasure locatorpolynomial σ(x) and the error/erasure evaluator polynomial ω(x).
 8. Thedecoder of claim 7, wherein the means for finding the locations andvalues of the errors comprises a Chien search block for evaluating theadjusted error/erasure locator polynomial {tilde over (σ)}(x) and {tildeover (σ)}′(x) for x =α⁰, α¹, . . . , α^(n′−1), and a Forney algorithmblock for evaluating the adjusted error/erasure evaluator polynomial{tilde over (ω)}(x) for x =α⁰, α¹, . . . , α^(n′−1), wherein {tilde over(σ)}′(x) is a derivative of σ(x), wherein RS(n′, k′) and RS(n, k) aredefined over a Galois field GF( 2^(m)), m being an integer, and αis aprimitive element of GF(2^(m)).
 9. The decoder of claim 7, wherein, as aresult of the index adjustment circuit, an order in which the errors ineach n′-symbol vector are output by the means for finding the locationsand values of the errors is the same as an order in which symbolscorresponding to the errors appear in the corresponding n′-symbolvector.
 10. A digital communications system utilizing an RS(n′, k′) codemodified from an RS(n, k) code, wherein n, k, n′, and k′ are integers,and k′<n′<n, k′<k <n, comprising: a channel for data transmission; atransmitter for encoding k′-symbol message blocks into n-symbolcodewords and transmitting n′-symbols of each codeword into the channel;and a receiver for receiving and decoding n′-symbol vectors eachcorresponding to the n′ symbols of one codeword transmitted by thetransmitter, the receiver comprising a memory device having storedtherein one erasure locator polynomial σ₀ (x) and look-up tables, asyndrome calculator for receiving the n′-symbol vectors and forcalculating syndromes of each n′-symbol vector, wherein the i-thsyndrome S_(i) of one n′-symbol vector R′, (r_(n′−1), r_(n′−2), . . . ,r₀), is S_(i)=R_(s)(α^(i+1)) for i=0, 1, . . . , n−k−1, whereinR_(s)(x)=r_(n′−1)x^(n′−1)+r_(n′−2)x^(n′−2)+ . . . +r₀, and means forfinding the locations and values of the errors in each n′-symbol vectorusing the syndromes thereof and the one erasure locator polynomialσ₀(x).
 11. The system of claim 10, wherein the encoder encodes eachk′-symbol message block by adding k−k′ 0's to the beginning of the k′symbols, which results in a k-symbol sequence, generating n−k paritysymbols corresponding to the resultant k-symbol sequence, which resultsin the corresponding n-symbol codeword including the k-symbol sequencefollowed by the n−k parity symbols, and puncturing the last(n−k)−(n′−k′) parity symbols, and wherein the n′ symbols of thecorresponding codeword transmitted into the channel include the k′symbols of the corresponding message block and the remaining n′−k′parity symbols.
 12. The system of claim 10, wherein the system issuitable to use any of a plurality of modified RS codes eachcorresponding to an erasure locator polynomial, the memory device storesthe erasure locator polynomials for all of the plurality of modified RScodes, and the one erasure locator polynomial σ₀(x) is selected from thestored erasure locator polynomials.
 13. The system of claim 10, whereinthe receiver further comprises means for correcting the errors in thereceived n′-symbol vectors.
 14. The system of claim 10, furthercomprising a modified syndrome calculator for calculating a modifiedsyndrome polynomial S₀(x) based on the syndromes calculated by thesyndromes calculator and the one erasure locator polynomial σ₀(x),wherein S₀(x) = S(x)σ₀(x) and${S(x)} = {\sum\limits_{i = 0}^{n - k - 1}{S_{i}{x^{i}.}}}$
 15. Thesystem of claim 14, wherein the receiver further comprises a keyequation solver for solving a key equation to generate an error/erasurelocator polynomial σ(x) and an error/erasure evaluator polynomial ω(x),wherein the key equation is S₀(x)σ₁(x)=ω(x) mod x^(n−k), andσ(x)=σ₀(x)σ₁(x), and wherein σ₁(x) is an error locator polynomial,wherein the key equation solver uses one of the look-up tables stored inthe memory device.
 16. The system of claim 15, wherein the key equationsolver comprises a modified Euclidean algorithm processor (ME processor)including a modified Euclidean divider for computing the error/erasureevaluator polynomial ω(x), a modified Euclidean multiplier for computingthe error locator polynomial σ₁(x), and an error/erasure locatorpolynomial calculator for calculating the error/erasure locatorpolynomial σ(x).
 17. The system of claim 15, wherein the receiverfurther comprises an index adjustment circuit for generating an adjustederror/erasure locator polynomial {tilde over (σ)}(x) and an adjustederror/erasure evaluator polynomial {tilde over (ω)}(x).
 18. The systemof claim 17, wherein an order in which the errors in each n′-symbolvector are output by the means for finding the locations and values ofthe errors is the same as an order in which symbols corresponding to theerrors appear in the corresponding n′-symbol vector.
 19. The system ofclaim 17, wherein the means for finding the locations and values of theerrors comprises a Chien search block for evaluating the adjustederror/erasure locator polynomial {tilde over (σ)}(x) and {tilde over(σ)}′(x) for x=α⁰, α¹, . . . , α^(n′−1), and a Forney algorithm blockfor evaluating the adjusted error/erasure evaluator polynomial {tildeover (ω)}(x) for x=α⁰, α¹, . . . , α^(n′−1), wherein {tilde over(σ)}′(x) is a derivative of σ(x), wherein RS(n′, k′) and RS(n, k) aredefined over a Galois field GF(2^(m)), m being an integer, and α is aprimitive element of GF(2^(m)).
 20. A method performed by a decoder fordecoding an RS( n′, k′) code modified from an RS( n, k) code, wherein n,k, n′, and k′are integers, and k′<n′<n, k′<k <n, the method comprising:storing one erasure locator polynomial σ₀(x) in a memory device in thedecoder; receiving n′-symbol vectors each corresponding to a k′-symbolmessage block; and decoding each n′-symbol vector R′, (r_(n′−1),r_(n′−2), . . . , r₀), including calculating syndromes of R′, whereinthe i-th syndrome S_(i) is S_(i)=R_(s)(α^(i+1)) for i=0, 1, . . . ,n−k−1, wherein R_(s)(x)=r_(n′−1)x^(n′−1)+r_(n′−2)x^(n′−2)+ . . . +r₀;generating an adjusted error/erasure locator polynomial {tilde over(σ)}(x) and an adjusted error/erasure evaluator polynomial {tilde over(ω)}(x) based on the syndromes; and finding the locations and values oferrors in R′based on the adjusted error/erasure locator polynomial{tilde over (σ)}(x) and the adjusted error/erasure evaluator polynomial{tilde over (ω)}(x), using a look-up table stored in the memory device.21. The method of claim 20, wherein decoding each n′-symbol vectorfurther includes calculating a modified syndrome polynomial S₀(x) basedon the syndromes thereof and the one erasure locator polynomial σ₀(x),wherein${S_{0}(x)} = {{{S(x)}{\sigma_{0}(x)}\mspace{20mu}{and}{\;\mspace{11mu}}{S(x)}} = {\sum\limits_{i = 0}^{n - k - 1}{S_{i}{x^{i}.}}}}$22. The method of claim 20, wherein decoding each n′-symbol vectorfurther includes correcting the errors in the received n′-symbolvectors.
 23. The method of claim 20, further comprising storing twoadditional erasure locator polynomials σ₀(x) in the decoder such thatthe three stored erasure locator polynomials σ₀(x) are${{\sigma_{0}(x)} = {{\prod\limits_{i = 1}^{s}\left( {1 - {\alpha^{255 - i}x}} \right)} = {\sum\limits_{i = 0}^{s}{\sigma_{0,i}x^{i}}}}},{for}$s = 4, 8, or  12, wherein RS(n′, k′) and RS(n, k) are defined over aGalois field GF(2^(m)), m being an integer, and α is a primitive elementof GF(2^(m)), and wherein the one erasure locator polynomial σ₀(x) isselected from the three stored erasure locator polynomials σ₀(x). 24.The method of claim 20, wherein decoding each n′-symbol vector furtherincludes solving a key equation to generate an error/erasure locatorpolynomial σ(x) and an error/erasure evaluator polynomial ω(x), whereinthe key equation is S₀(x)σ₁(x)=ω(x) mod x^(n−k), and σ(x)=σ₀(x)σ₁(x),and wherein σ₁(x) is an error locator polynomial.
 25. The method ofclaim 24, wherein decoding each n′-symbol vector further includesadjusting indices of the error/erasure locator polynomial σ(x) and theerror/erasure evaluator polynomial ω(x) to generate the adjustederror/erasure locator polynomial {tilde over (σ)}(x) and the adjustederror/erasure evaluator polynomial {tilde over (ω)}(x).
 26. The methodof claim 25, wherein finding the locations and values of the errorsincludes performing a Chien search to evaluate the adjustederror/erasure locator polynomial {tilde over (σ)}(x) and {tilde over(σ)}′(x) for x=α⁰, α¹, . . . , α^(n′−1), and performing a Forneyalgorithm to evaluate the adjusted error/erasure evaluator polynomial{tilde over (ω)}(x) for x=α⁰, α¹, . . . , α^(n′−1), wherein {tilde over(σ)}′(x) is a derivative of σ(x), wherein RS(n′, k′) and RS(n, k) aredefined over a Galois field GF(2^(m)), m being an integer, and α is aprimitive element of GF(2^(m)).
 27. The method of claim 25, whereinfinding the locations and values of the errors comprises finding thelocations and values of the errors in an order that is the same as anorder in which symbols corresponding to the errors appear in thecorresponding n′-symbol vector.